package com.scen.upload.utils;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import javax.swing.filechooser.FileSystemView;
import java.io.FileOutputStream;
import java.io.IOException;

public class POIUtils {
    public static void main(String[] args) throws IOException {
        Workbook workbook = new HSSFWorkbook();  // 定义一个新的工作簿
        Sheet sheet = workbook.createSheet("第一个sheet页");  // 创建第一个Sheet页
        Row row = sheet.createRow(2);  // 创建一个行
        row.setHeightInPoints(30);  // 设置这一行的高度
        createCell(workbook, row, (short) 0, HSSFCellStyle.ALIGN_CENTER, HSSFCellStyle.VERTICAL_BOTTOM);  // 既在中间又在下面
        createCell(workbook, row, (short) 1, HSSFCellStyle.ALIGN_FILL, HSSFCellStyle.VERTICAL_CENTER);  // 要充满屏幕又要中间
        createCell(workbook, row, (short) 2, HSSFCellStyle.ALIGN_LEFT, HSSFCellStyle.VERTICAL_TOP);  // 既在右边又在上边
        createCell(workbook, row, (short) 3, HSSFCellStyle.ALIGN_RIGHT, HSSFCellStyle.VERTICAL_TOP);  // 既在右边又在上边
        String systemPath = String.valueOf(FileSystemView.getFileSystemView().getHomeDirectory().getAbsoluteFile());
        FileOutputStream fileOutputStream = new FileOutputStream(systemPath + "\\测试工作簿.xls");
        workbook.write(fileOutputStream);
        fileOutputStream.flush();
        fileOutputStream.close();
        System.out.println(systemPath + "\\测试工作簿.xls" + "已生成");
    }

    /**
     * 创建一个单元格并为其设定指定的对齐方式
     *
     * @param workbook 工作簿
     * @param row      行
     * @param column   列
     * @param halign   水平方向对齐方式
     * @param valign   垂直方向对齐方式
     */
    private static void createCell(Workbook workbook, Row row, short column, short halign, short valign) {
        Cell cell = row.createCell(column);  // 创建单元格
        cell.setCellValue(new HSSFRichTextString("随便写一句话"));
        CellStyle cellStyle = workbook.createCellStyle();  // 创建单元格样式
        cellStyle.setAlignment(halign); // 设置单元格水平方向对齐方式
        cellStyle.setVerticalAlignment(valign);
        cell.setCellStyle(cellStyle);
    }
}
